package com.snail.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.snail.model.dto.LoginResultDTO;
import com.snail.model.dto.UpdatePasswordDTO;
import com.snail.model.pojo.SysUser;

import java.util.List;

/**
 * @Author 蔡徐坤
 * @Date 2025/7/14 23:43
 * @Description: 用户实现类
 */

/**
 * 这里继承的是mybatis-plus的IService接口，该接口中定义了常用的CRUD方法，比如save、deleteById等等。
 */
public interface SysUserService extends IService<SysUser> {

    /**
     * 用户注册
     */
    void register(SysUser sysUser);

    /**
     * 用户登录
     */
    LoginResultDTO commonLogin(SysUser sysUser, boolean isAdmin);

    /**
     * 用户登录
     */
    LoginResultDTO userLogin(SysUser sysUser);

    /**
     * 管理员登录
     */
    LoginResultDTO adminLogin(SysUser sysUser);


    /**
     * 获取当前登录用户信息
     */
    SysUser getUser();

    /**
     * 获取所有用户
     */
    List<SysUser> findAllUsers();

    /**
     * 根据用户ID获取用户
     */
    SysUser getByUserId(Long userId);

    /**
     * 更新用户信息
     */
    void updateUser(SysUser sysUser);

    /**
     * 修改密码
     */
    void updatePassword(UpdatePasswordDTO userDTO);

    /**
     * 重置密码
     */
    void resetPassword(Long userId);

    /**
     * 删除用户（逻辑删除）
     */
    void deleteUser(Long userId);

}
